#ifndef VSqlDatabase_H
#define VSqlDatabase_H

#include "QtSql/QSqlDatabase.h"

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
															
class VSqlDatabase : public QSqlDatabase
{
public:
	VSqlDatabase();
	
	static void destroy() { init().destroy();}
	static QSqlDatabase &inst() { return *init().database();}
	static QSqlDatabase &main() { return *init().database();}

	static bool checkConnection();
	
	// HostName;DatabaseName;UserName;Password
	static bool setConnectionString(const QStringList &v) { return init().setConnectionString(v);}
	static QStringList connectionString() { return init().connectionString();}
	
private:
	class VInit
	{
	public:
		VInit();
		~VInit() { destroy();}

		bool setConnectionString(const QStringList &v);
		QStringList connectionString() const;
		
		QSqlDatabase *database();
		void destroy();
		
	private:
		QSqlDatabase *m_database;
	};
	static VInit& init() { static VInit i; return i;}
};

#endif
